package gsw.demo.mvvm;

import android.databinding.BaseObservable;
import android.databinding.Bindable;
import android.databinding.BindingAdapter;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.squareup.picasso.Picasso;

/**
 * Model层：定义bean，获取数据
 */
public class User extends BaseObservable {
    private String name;
    private String password;
    private String header;

    public User(String name, String password, String header) {
        this.name = name;
        this.password = password;
        this.header = header;
    }

    /**
     * 使用@Bindable来标记需要修改的属性
     */
    @Bindable
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
        //通知ActivityMainBinding修改数据。
        notifyPropertyChanged(BR.name);
    }

    @Bindable
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
        notifyPropertyChanged(BR.password);
    }

    public String getHeader() {
        return header;
    }

    public void setHeader(String header) {
        this.header = header;
    }

    /**
     * 自定义属性：必须提供一个静态方法来设置自定义属性
     * View中设置了这个自定义属性时，会调用这个方法
     * 使用@BindingAdapter，将header设置为自定义属性，在view中调用：app:header="@{user.header}"
     *
     * @param view 设置自定义属性的组件
     * @param url  自定义属性的值
     */
    @BindingAdapter("header")
    public static void getImage(ImageView view, String url) {
        Log.d("test2008", url);
        Picasso.with(view.getContext()).load(url).into(view);
    }

    /**
     * 声明的事件，可在模板中使用
     */
    public void click(View view) {
        Toast.makeText(view.getContext(), getName(), Toast.LENGTH_SHORT).show();
    }
}



